/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package cz.vse.adventura.po1715.xshet00_shevtsova.gui;

import cz.pecinovsky.english.pojj.adv_framework.game_gui.IObjectG;
import cz.pecinovsky.english.pojj.adv_framework.game_txt.INamed;
import javax.swing.JLabel;
import javax.swing.SwingConstants;

/*******************************************************************************
 * Instance třídy {@code PrvekPanelu} představují komponenty
 * sloužící k zobrazení jim zadaného objektu.
 *
 * @author TShevtsova
 */
@SuppressWarnings("serial")
public class PrvekPanelu extends JLabel
{
//== KONSTANTNÍ ATRIBUTY TŘÍDY =================================================
//== PROMĚNNÉ ATRIBUTY TŘÍDY ===================================================
//== STATICKÝ INICIALIZAČNÍ BLOK - STATICKÝ KONSTRUKTOR ========================
//== KONSTANTNÍ ATRIBUTY INSTANCÍ ==============================================

    /** Název zobrazovaného prvku. */
    private final String popisek;


//== PROMĚNNÉ ATRIBUTY INSTANCÍ ================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ TŘÍDY ========================================
//== OSTATNÍ NESOUKROMÉ METODY TŘÍDY ===========================================

//##############################################################################
//== KONSTRUKTORY A TOVÁRNÍ METODY =============================================

    /***************************************************************************
     * Vytvoří komponentu zobrazující název zadaného předmětu
     * spolu s jeho obrázkem.
     *
     * @param předmět Zobrazovaný předmět
     */
    public PrvekPanelu(IObjectG předmět)
    {
        super(předmět.getName(), předmět.getPicture(), SwingConstants.CENTER);
        popisek = inicalizuj(předmět);
    }


    /***************************************************************************
     * Vytvoří komponentu zobrazující název zadaného pojemnovaného objektu
     * (většinou místnosti).
     *
     * @param objekt Zobrazovaný objekt
     */
    public PrvekPanelu(INamed objekt)
    {
        super(objekt.getName(), SwingConstants.CENTER);
        popisek = inicalizuj(objekt);
    }



//== ABSTRAKTNÍ METODY =========================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ INSTANCÍ =====================================

    /***************************************************************************
     * Vrátí název zobrazovaného objetku.
     *
     * @return Název zobrazovaného objetku
     */
    public String getNázev()
    {
        return popisek;
    }


    /***************************************************************************
     * Inicializuje vytvářenou komponentu a vrátí název zobrazovaného objektu.
     * Přestavuje společnou část kódu obou verzí konstruktoru.
     *
     * @param objekt Zobrazovaný objekt
     * @return Název zobrazovaného objetku
     */
    private String inicalizuj(INamed objekt)
    {
        setHorizontalTextPosition(SwingConstants.CENTER);
        setVerticalTextPosition(SwingConstants.TOP);
        return objekt.getName();
    }



//== OSTATNÍ NESOUKROMÉ METODY INSTANCÍ ========================================
//== SOUKROMÉ A POMOCNÉ METODY TŘÍDY ===========================================
//== SOUKROMÉ A POMOCNÉ METODY INSTANCÍ ========================================
//== INTERNÍ DATOVÉ TYPY =======================================================
//== TESTY A METODA MAIN =======================================================
//
//    /***************************************************************************
//     * Testovací metoda.
//     */
//    public static void test()
//    {
//        PrvekPanelu inst = new PrvekPanelu();
//    }
//    /** @param args Parametry příkazového řádku - nepoužívané. */
//    public static void main( String[] args )  {  test();  }
}
